#ifndef __LED_MANAGER_H__
#define __LED_MANAGER_H__

#include <rtconfig.h>
#define LED_QUEUE_TIMEOUT (200)
// LED 闪烁的时间间隔 500ms
#define LED_BLINK_TIME (500)

#ifdef UC_GATEWAY_HARDWARE

typedef enum _led_id
{
    LED_RUN = 0, // LED 15
    LED_BLUE,    // LED 14
    LED_CAT1,    // LED 10
    LED_WIFI,    // LED 11
    LED_ETH,     // LED 12
    LED_WIOTA,   // LED 13
    LED_MQTT,    // CN5
    LED_MAX_NUM,
} led_id_e;

#else

typedef enum _led_id
{
    LED_RUN = 0,    // LED D7
    LED_BLUE,       // LED D8
    LED_STATE,      // LED D9
    LED_MQTT_ERR,   // LED D21(下) NA
    LED_MQTT_STATE, // LED D21(上)
    // LED_WIOTA_DATE,  // NA
    LED_WIOTA_STATE, // LED D22(上)
    LED_MAX_NUM,
} led_id_e;

#endif

typedef enum _led_event
{
    LED_E_DEF = 0,    // NA
    LED_E_EXCEPTION,  // led 长亮事件, 代表异常
    LED_E_NORMAL,     // led 长灭事件, 代表正常
    LED_E_BLINK,      // led 闪烁事件, 数据
    LED_E_BLINK_KEEP, // led 持续闪烁事件
} led_event_e;

/**
 * @defgroup 接口函数
 */

// 创建队列
// int led_manager_create_queue(void);
// 获取队列
//void *get_led_manager_queue(void);
// LED任务
void led_manager_task(void *pPara);

/**
 * @brief    发送LED事件
 * @param[IN]    id LED灯序号 LED_BLUE/LED_CAT1/...
 * @param[IN]    e  执行事件 LED_E_EXCEPTION/LED_E_NORMAL/LED_E_BLINK
 *
 * @return int   0  正常, 其他异常
 */
int send_led_event(led_id_e id, led_event_e e);

#endif